package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.so.SoContactUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.SoContactDO;
import com.cmc.cloud.cmclink.doc.mq.SoEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.socontactvo.SoContactCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.socontactvo.SoContactRespVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.socontactvo.SoContactUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 订舱联系人信息 Convert
 *
 * @author 招商轮船-管理员
 */
@Mapper
public interface SoContactConvert {

    SoContactConvert INSTANCE = Mappers.getMapper(SoContactConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    SoContactDO convert(SoContactCreateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    List<SoContactDO> convertBatchUpdate(List<SoContactUpdateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    List<SoContactDO> convertBatch(List<SoContactCreateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    SoContactDO convert(SoContactUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    SoContactRespVO convert(SoContactDO bean);

    /**
     * 属性转换 convert
     *
     * @param list bean
     * @return obj
     */
    List<SoContactRespVO> convertList(List<SoContactDO> list);

    /**
     * 属性转换 convert
     *
     * @param list bean
     * @return obj
     */
    List<SoContactCreateReqVO> convertCreateList(List<SoContactDO> list);

    /**
     * 属性转换
     *
     * @param soContactUpdateReqDtoList list
     * @return List<SoContactUpdateReqVO>
     */
    List<SoContactUpdateReqVO> convertSoContactUpdateReqDto(List<SoContactUpdateReqDto> soContactUpdateReqDtoList);
    /**
     * 属性转换
     *
     * @param contactList list
     * @return List<SoContactUpdateReqVO>
     */
    List<SoContactUpdateReqVO> ediConvertSoContactUpdateReqDto( List<SoEdiReqVO.Contact> contactList);

    /**
     * 属性转换 convert
     *
     * @param list bean
     * @return obj
     */
    List<SoContactDO> convertDoList(List<SoContactRespVO> list);

    /**
     * 属性转换
     *
     * @param soContactDoList bean
     * @return obj
     */
    List<SoContactUpdateReqDto> convertSoContactUpdateReqDtos(List<SoContactDO> soContactDoList);
}
